package com.dapeng.cleardatabackend.model.vo;

import com.dapeng.cleardatabackend.model.entity.Graph;
import com.dapeng.cleardatabackend.model.enums.GraphStatusEnum;
import com.dapeng.cleardatabackend.model.enums.IsEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.util.Date;

/**
 * @author dapeng
 * @description 图谱VO
 * @date 2024/12/22 22:14
 */
@Data
@ApiModel(description = "图谱视图类")
public class GraphVO implements Serializable {

    /**
     * id
     */
    private Long id;

    /**
     * 图谱名称
     */
    @ApiModelProperty(value = "图谱名称")
    private String name;

    /**
     * 图谱描述
     */
    @ApiModelProperty(value = "图谱描述")
    private String description;


    /**
     * 是否公开 0-私有 1-公开
     */
    @ApiModelProperty(value = "是否公开 0-私有 1-公开", dataType = "java.lang.Integer")
    private IsEnum isPublic;

    /**
     * 是否发布 0-未发布 1-发布
     */
    @ApiModelProperty(value = "是否发布 0-未发布 1-发布", dataType = "java.lang.Integer")
    private IsEnum isPublish;

    /**
     * 状态 0-创建成功 1-正在创建 2-创建失败
     */
    @ApiModelProperty(value = "状态 0-创建成功 1-正在创建 2-创建失败", dataType = "java.lang.Integer")
    private GraphStatusEnum status;

    /**
     * 所有者名字
     */
    @ApiModelProperty(value = "所有者名字")
    private String ownerName;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 将实体类转换为视图类
     *
     * @param graph 图谱
     * @return {@link GraphVO }
     */
    public static GraphVO beanToVo(Graph graph) {
        GraphVO graphVO = new GraphVO();
        BeanUtils.copyProperties(graph, graphVO);
        return graphVO;
    }
}
